package com.xiaoai.juc;

import java.util.concurrent.atomic.AtomicInteger;

public class VolatileNoAtomic extends Thread {
    //需要10个线程共享count 用static修饰关键字，其存放在静态区，只会存放一次，这样所有线程都会共享了。
//    private volatile static int count = 0;
    //通过AtomicInteger类(原子类，jdk1.5出现)保证线程原子性
    private static AtomicInteger count = new AtomicInteger(0);
    @Override
    public void run() {
        for (int i=0;i<1000;i++){
//            count++;
            count.incrementAndGet(); //即变量count++
        }
        //使用volatile修饰，其最后结果可能也不是10000，其只实现线程可见性，不保证线程原子性，因此最后可能不会出现结果10000
//        System.out.println(getName()+","+count)
        //通过原子类保证最后结果得到10000 即线程安全
        System.out.println(getName()+","+count.get());

    }

    public static void main(String[] args){
        //创建10个线程
        VolatileNoAtomic[] volatileNoAtomics = new VolatileNoAtomic[10];
        for (int i=0; i<volatileNoAtomics.length;i++){
            volatileNoAtomics[i].start();
        }
    }
}